package com.freejava.testredis.demo.service;

import com.alibaba.fastjson.JSON;
import com.freejava.testredis.demo.pojo.User;
import com.freejava.testredis.demo.utils.LoginResult;
import com.freejava.testredis.demo.utils.RedisUtil;
import com.freejava.testredis.demo.utils.UUIDUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class LoginService {

    @Autowired
    RedisUtil redis;

    /**
     * 登录功能
     * 登录成功之后，需要在Redis中保存一个登录凭证，凭证是有过期时间的
     *
     * @param user
     * @return
     */
    public LoginResult doLogin(User user) {

        LoginResult resultObj = new LoginResult("", true);

        // 写死了用户名和密码
        if (user.getName() != "admin"
                || user.getPassword() != "admin") {
            resultObj.setRes(false);
            return resultObj;
        }

        // 将user对象进行json字符串化。
        String userString = JSON.toJSONString(user);

        // 存储登录凭证到redis里面
        // 获取一个uuid
        String uuid = UUIDUtil.getUUID();
        // 设置user_ + uuid为键，userString为对应值。
        redis.set("user_" + uuid, userString);
        // 设置有效时间为1天
        redis.expire("user_" + uuid, 1 * 24 * 3600);
        // 设置返回对象属性
        resultObj.setRes(true);
        resultObj.setUserId(uuid);

        return resultObj;
    }
}
